const { execSync,exec } = require('child_process');
const path = require('path');

/**
 * 使用balcon.exe进行文本转语音
 * @param {Object} options 配置选项
 * @param {string} options.text 要转换的文本内容
 * @param {string} [options.voice] 语音名称(如"Microsoft Anna")
 * @param {number} [options.speed=0] 语速(-10到10)
 * @param {number} [options.volume=100] 音量(0到100)
 * @param {string} [options.outputFile] 输出WAV文件路径(不指定则直接朗读)
 * @returns {boolean} 是否成功
 */
function ToBaIcon(options) {
    return new Promise((resolve, reject )=>{
        try {
            // 获取balcon.exe路径
            const balconPath = path.join(__dirname, 'baIcon', 'balcon.exe');
            
            // 构造基本命令
            let command = `"${balconPath}"`;
            // Microsoft Huihui Desktop
            // 添加语音参数
            if (options.voice) {
                command += ` -n "${options.voice}"`;
            }
            
            // 添加语速参数
            if (options.speed !== undefined) {
                command += ` -s ${options.speed}`;
            }
            
            // 添加音量参数
            if (options.volume !== undefined) {
                command += ` -v ${options.volume}`;
            }
            
            // 添加输出文件参数
            if (options.outputFile) {
                command += ` -w "${options.outputFile}"`;
            }
            
            // 添加文本参数
            command += ` -t "${options.text.replace(/"/g, '\\"')}"`;
            
            // 执行命令
            // execSync(command, { stdio: 'inherit' })
            exec(command, (error) => {
                console.log('说完了')
                resolve();
            })
        } catch (error) { 
            reject()
            console.error('文本转语音失败:', error.message);
        }
    })
}

module.exports = { ToBaIcon };